﻿/**************************************************************************************************************
* CONSTANTES
***************************************************************************************************************/
var NACIONALIDAD_POR_DEFECTO = "Chilena";             //usado para el determinar la nacionalidad por defecto
//declaraciones de codigos de retorno de los procedimientos almacenados
var CONST_CODIGO_SQL_VALOR_DUPLICADO = -100;
var CONST_CODIGO_SQL_ERROR = -200;
var CONST_CODIGO_SIN_CONEXION = -201;
var CONST_CODIGO_SIN_SESION = -500;
var CONST_CODIGO_SQL_EXITO = 200;
var CONST_CODIGO_SQL_SIN_DATOS = 404;
var CONST_CODIGO_TEXTO_NO_PERMITIDO = 550;
var NOMBRE_FORM_ASPNET = "aspnetForm";
var NOMBRE_FORM_ASPNET_JQUERY = "#" + NOMBRE_FORM_ASPNET;
var NOMBRE_FORM_NORMAL = "form1";
var NOMBRE_FORM_NORMAL_JQUERY = "#" + NOMBRE_FORM_NORMAL;
var GEN_TEXTO_AYUDA_AUTOCOMPLETAR = "Escriba texto para autocompletar";

//llave perfiles
var KEY_PERFIL_CLIENTE = "CLI";
var KEY_PERFIL_COMPANIA_SEGURO = "COM";
var KEY_PERFIL_ADMINISTRADOR = "ADM";
var KEY_PERFIL_EJECUTIVO_ALTO = "EAL";

//EstadoSiniestro
var INFORMADO = 1;
var CONTACTADO = 5;
var NO_CONTACTADO = 6;
var PODER_POR_RETIRAR = 7;
var NO_INTERESA_ASESORIA = 8;
var CONFIRMA_RETIRO_PODER = 2;
var NO_CONFIRMA_RETIRO_PODER = 3;

/***************************************************************************************************************
* METODOS
***************************************************************************************************************/
//------------------------------------------------------------------------------------
//Funcion    : getDate()
//Descripcion: construye un objeto fecha a partir de una fecha dada
//Por        : VSR, 22/05/2008
function getDate(strDate, strTime){
	strDate   = strDate.replace(/[-]/g, "/");
	var day   = strDate.split("/")[0];
	var month = strDate.split("/")[1] - 1;
	var year  = strDate.split("/")[2];
	var hour  = strTime.split(":")[0];
	var seg   = strTime.split(":")[1];
	return new Date(year, month, day, hour, seg, 0, 0);
}

//------------------------------------------------------------------------------------
//Funcion    : diffDayDate()
//Descripcion: resta dos fechas y devuelve la cantidad de dias de diferencias entre ellas
//Por        : VSR, 22/05/2008
function diffDayDate(objFechaInicio,objFechaTermino){
	//1 dia expresado en milisegundos
	var mseg_dia   = 1000*60*60*24;
	//resta ambas fechas y obtiene los dias de diferencia
	var diferenciaDias = Math.ceil((objFechaTermino.getTime()-objFechaInicio.getTime())/(mseg_dia));
	//retorna valor
	return diferenciaDias;
}

//------------------------------------------------------------------------------------
//Metodo      : mostrarElemento()
//Descripcion : mantiene un control visible
//Por         : VSR, 20/06/2008
function mostrarElemento(idElemento){
  var elemento = document.getElementById(idElemento);
  if(elemento){elemento.style.display = "block";}
}

//------------------------------------------------------------------------------------
//Metodo      : ocultarElemento()
//Descripcion : oculta un control
//Por         : VSR, 20/06/2008
function ocultarElemento(idElemento){
  var elemento = document.getElementById(idElemento);
  if(elemento){elemento.style.display = "none";}
}


//------------------------------------------------------------------------------------
//Metodo      : mostrarElementoConEfecto()
//Descripcion : mantiene un control visible
//Por         : VSR, 20/06/2008
function mostrarElementoConEfecto(idElemento,usarEfecto){
  var elemento = document.getElementById(idElemento);
  var duracionSlide = "1.0";

  if(elemento){
    //si no usa efecto entonces muestra el contenedor, sino lo anima
    if(!usarEfecto){
      elemento.style.display = "block";
    }
    else{
      //metodo de scriptaculos.js
      new Effect.SlideDown(idElemento, { duration: duracionSlide });
      new Effect.Highlight(idElemento, 
                      {
                        startcolor: "#feffd0",
                        duration: 2
                      });
    }
  }
}

//------------------------------------------------------------------------------------
//Metodo      : ocultarElementoConEfecto()
//Descripcion : oculta un control
//Por         : VSR, 20/06/2008
function ocultarElementoConEfecto(idElemento,usarEfeto){
  var elemento = document.getElementById(idElemento);
  var duracionSlide = "1.0";

  if(elemento){
    //si no usa efecto entonces muestra el contenedor, sino lo anima
    if(!usarEfecto){
      elemento.style.display = "none";
    }
    else{
      //metodo de scriptaculos.js
      new Effect.SlideUp(idElemento, { duration: duracionSlide });
      new Effect.Highlight(idElemento, 
                      {
                        startcolor: "#feffd0",
                        duration: 2
                      });
    }
  }
}


//------------------------------------------------------------------------------------
//Metodo      : limpiarInnerHTML()
//Descripcion : limpia el control con el valor enviado
//Por         : VSR, 01/07/2008
function limpiarInnerHTML(idElemento,valor){
  var elemento = document.getElementById(idElemento);
  if(elemento){elemento.innerHTML = valor;}
}

//------------------------------------------------------------------------------------
//Metodo      : limpiarTextBox()
//Descripcion : limpia el control con el valor enviado
//Por         : VSR, 01/07/2008
function limpiarTextBox(idElemento,valor){
  var elemento = document.getElementById(idElemento);
  if(elemento){elemento.value = valor;}
}

//----------------------------------------------------------------------------------------------------------------
function Left(s, n){
  // Devuelve los n primeros caracteres de la cadena
  if(n>s.length)
    n=s.length;
    
  return s.substring(0, n);
}

//----------------------------------------------------------------------------------------------------------------
function Right(s, n){
  // Devuelve los n últimos caracteres de la cadena
  var t=s.length;
  if(n>t)
    n=t;
  return s.substring(t-n, t);
}

//----------------------------------------------------------------------------------------------------------------
function Mid(s, n, c){
  // Devuelve una cadena desde la posición n, con c caracteres
  // Si c = 0 devolver toda la cadena desde la posición n
  
  var numargs=Mid.arguments.length;
  
  // Si sólo se pasan los dos primeros argumentos
  if(numargs<3)
    c=s.length-n+1;
    
  if(c<1)
    c=s.length-n+1;
  if(n+c >s.length)
    c=s.length-n+1;
  if(n>s.length)
    return "";
    
  return s.substring(n-1,n+c-1);
}

//----------------------------------------------------------------------------------------------------------------
function Trim(s){
  // Quita los espacios del principio y del final
  return LTrim(RTrim(s));
}


//----------------------------------------------------------------------------------------------------------------
function InStr(n, s1, s2){
  // Devuelve la posición de la primera ocurrencia de s2 en s1
  // Si se especifica n, se empezará a comprobar desde esa posición
  // Sino se especifica, los dos parámetros serán las cadenas
  var numargs=InStr.arguments.length;
  
  if(numargs<3)
    return n.indexOf(s1)+1;
  else
    return s1.indexOf(s2, n)+1;
}

//----------------------------------------------------------------------------------------------------------------
function RInStr(n, s1, s2){
  // Devuelve la posición de la última ocurrencia de s2 en s1
  // Si se especifica n, se empezará a comprobar desde esa posición
  // Sino se especifica, los dos parámetros serán las cadenas
  var numargs=RInStr.arguments.length;
  
  if(numargs<3)
    return n.lastIndexOf(s1)+1;
  else
    return s1.lastIndexOf(s2, n)+1;
}

//----------------------------------------------------------------------------------------------------------------
function Space(n){
  // Devuelve una cadena con n espacios
  var t="";
  
  for(var i=1; i<=n; i++)
    t=t+" ";
  
  return t;
}

//----------------------------------------------------------------------------------------------------------------
function jString(n, c){
  // Devuelve n veces el caracter c
  var t="";
  
  for(var i=1; i<=n; i++)
    t=t+c;
  return t;
}

//----------------------------------------------------------------------------------------------------------------
function UCase(s){
  // Devuelve la cadena convertida a mayúsculas
  return s.toUpperCase();
}

//----------------------------------------------------------------------------------------------------------------
function LCase(s){
  // Devuelve la cadena convertida en minúsculas
  return s.toLowerCase();
}

//----------------------------------------------------------------------------------------------------------------
function Len(s){
  // Devuelve la longitud de la cadena s
  return s.length;
}


//----------------------------------------------------------------------------------------------------------------
function StrReverse(s){
  // Invierte la cadena
  var i=s.length;
  var t="";
  
  while(i>-1){
    t=t+ s.substring(i,i+1);
    i--;
  }
  return t;
}

//----------------------------------------------------------------------------------------------------------------
function startWith(str, prefix) {
  return str.indexOf(prefix) === 0;
}

//----------------------------------------------------------------------------------------------------------------
//Funcion    : ObtenerExtensionArchivo
//Descripcion: determina que tipo de archivo es el archivo
function ObtenerExtensionArchivo(nombreArchivo){
  var extension = "";  
  //valida si es Vacio
  if(Trim(nombreArchivo)=="") return extension;

  //separa el nombre del archivo por cada punto(.) que encuentre y lo deja en un arreglo
  var arrSplit = nombreArchivo.split(".");
  //obtiene largo del arreglo
  var largo = arrSplit.length;
  //obtiene la extension del archivo
  extension = arrSplit[largo-1].toLowerCase();
  //retorna valor
  return extension;
}


//----------------------------------------------------------------------------------------------------------------
//Funcion    : ObtenerTipoArchivo
//Descripcion: determina que tipo de archivo es segun la extension
function ObtenerTipoArchivo(extension){
  var tipoImage       = "|bmp|cod|gif|ief|jpe|jpeg|jpg|jfif|svg|tif|tiff|ras|cmx|ico|png|pnm|pbm|pgm|ppm|rgb|xbm|xpm|xwd|";
  var tipoOffice      = "|doc|dot|xla|xlc|xlm|xls|xlt|xlw|msg|sst|cat|stl|pdf|pot|pps|ppt|mpp|wcm|wdb|wks|wps|mdb|";
  var tipoApplication = "|evy|fif|spl|hta|acx|hqx|bin|class|dms|exe|lha|lzh|oda|axs|prf|p10|crl|ai|eps|ps|rtf|setpay|setreg|hlp|bcpio|cdf|z|tgz|cpio|csh|dcr|dir|dxr|dvi|gtar|gz|hdf|ins|isp|iii|js|latex|crd|clp|dll|m13|m14|mvb|wmf|mny|pub|scd|trm|wri|cdf|nc|pma|pmc|pml|pmr|pmw|p12|pfx|p7b|spc|p7r|p7c|p7m|p7s|sh|shar|swf|sit|sv4cpio|sv4crc|tar|tcl|tex|texi|texinfo|roff|t|tr|man|me|ms|ustar|src|cer|crt|der|pko|zip|";
  var tipoAudio       = "|au|snd|mid|rmi|mp3|aif|aifc|aiff|m3u|ra|ram|wav|";
  var tipoMessage     = "|mht|mhtml|nws|";
  var tipoText        = "|css|323|htm|html|stm|uls|bas|c|h|txt|rtx|sct|tsv|htt|htc|etx|vcf|";
  var tipoVideo       = "|mp2|mpa|mpe|mpeg|mpg|mpv2|mov|qt|lsf|lsx|asf|asr|asx|avi|movie|";
  var tipoOtros       = "|flr|vrml|wrl|wrz|xaf|xof|";
  var tipoArchivo     = "";

  //se formatea la extension para buscarlo
  extension           = "|"+ extension +"|";

  //verfica que tipo de archivo es   
  if(InStr(0, tipoImage, extension)>0){
    tipoArchivo = "image";
  }
  else if(InStr(0, tipoOffice, extension)>0){
    tipoArchivo = "office";
  }
  else if(InStr(0, tipoApplication, extension)>0){
    tipoArchivo = "application";
  }
  else if(InStr(0, tipoAudio, extension)>0){
    tipoArchivo = "audio";
  }
  else if(InStr(0, tipoMessage, extension)>0){
    tipoArchivo = "message";
  }
  else if(InStr(0, tipoText, extension)>0){
    tipoArchivo = "text";
  }
  else if(InStr(0, tipoVideo, extension)>0){
    tipoArchivo = "video";
  }
  else if(InStr(0, tipoOtros, extension)>0){
    tipoArchivo = "otro";
  }
  else{
    tipoArchivo = "desconocido";
  }
  
  //retorna valor
  return tipoArchivo;
}

//------------------------------------------------------------------
//Metodo      : expandirContraer()
//Descripcion : permite que a traves de un link se muestre u oculte una capa dando la sensacion de que
//              se expande y contrae
//Por         : VSR, 09/08/2008
function expandirContraer(idContenedorImagenExpandirContraer, idCapaExpandirContraer, accion, funcionExecExpandir, funcionExecContraer) {
  var nombreImagenExpandir = "../img/nolines_plus.gif";
  var nombreImagenContraer = "../img/nolines_minus.gif";
  var imagen = document.getElementById(idContenedorImagenExpandirContraer);
  var capa = document.getElementById(idCapaExpandirContraer);

  if (accion == "expandir") {
    imagen.innerHTML = "<a href=\"javascript:;\" onclick=\"expandirContraer('" + idContenedorImagenExpandirContraer + "','" + idCapaExpandirContraer + "','contraer','" + funcionExecExpandir + "','" + funcionExecContraer + "');\"><img src=\"" + nombreImagenContraer + "\" alt=\"contraer\" style=\"vertical-align:middle;\" /></a>";
    capa.style.display = "block";
    if (typeof (funcionExecExpandir) == "string" && funcionExecExpandir != "") {
      var sEval = "if(typeof(@FUNCION@)=='function'){@FUNCION@();}";
      eval(sEval.replace(/\@FUNCION@/g, funcionExecExpandir));
    }
  }
  else {
    imagen.innerHTML = "<a href=\"javascript:;\" onclick=\"expandirContraer('" + idContenedorImagenExpandirContraer + "','" + idCapaExpandirContraer + "','expandir','" + funcionExecExpandir + "','" + funcionExecContraer + "');\"><img src=\"" + nombreImagenExpandir + "\" alt=\"expandir\" style=\"vertical-align:middle;\" /></a>";
    capa.style.display = "none";
    if (typeof (funcionExecContraer) == "string" && funcionExecContraer != "") {
      var sEval = "if(typeof(@FUNCION@)=='function'){@FUNCION@();}";
      eval(sEval.replace(/\@FUNCION@/g, funcionExecContraer));
    }
  }
}

//------------------------------------------------------------------
//Metodo      : expandirContraerConTexto()
//Descripcion : permite que a traves de un link se muestre u oculte una capa dando la sensacion de que
//              se expande y contrae
//Por         : VSR, 09/08/2008
function expandirContraerConTexto(idContenedorImagenExpandirContraer,idCapaExpandirContraer,accion,textoExpandir, textoContraer, cssTextoExpandirContraer, funcionExecExpandir, funcionExecContraer, mostrarImagenExpandirContraer, usarEfecto){
  var nombreImagenExpandir = "../img/nolines_plus.gif";
  var nombreImagenContraer = "../img/nolines_minus.gif";
  var imagen = document.getElementById(idContenedorImagenExpandirContraer);
  var capa   = document.getElementById(idCapaExpandirContraer);
  var html = "";
  var efecto = "";
  var imgExpandirContraer = "";
  var sEval = "";
  var duracionSlide = "1.0";

  if(accion=="expandir"){
    //string con el html a construir
    html = "<a href=\"javascript:;\" onclick=\"expandirContraerConTexto('"+ idContenedorImagenExpandirContraer +"','"+ idCapaExpandirContraer +"','contraer','"+ textoExpandir +"','"+ textoContraer +"','"+ cssTextoExpandirContraer +"','"+ funcionExecExpandir +"','"+ funcionExecContraer +"',"+ mostrarImagenExpandirContraer +","+ usarEfecto +");\">{$IMAGEN_EXPANDIR_CONTRAER}<span class=\""+ cssTextoExpandirContraer +"\">"+ textoContraer +"</span></a>";
    imgExpandirContraer = (mostrarImagenExpandirContraer) ? "<img src=\""+ nombreImagenContraer +"\" alt=\"contraer\" style=\"vertical-align:middle;\" />":"";
    //reemplza marcas especiales
    html = html.replace("{$IMAGEN_EXPANDIR_CONTRAER}", imgExpandirContraer);
    imagen.innerHTML = html;
    //si no usa efecto entonces muestra el contenedor, sino lo anima
    if(!usarEfecto){
      capa.style.display = "block";
    }
    else{
      //metodo de scriptaculos.js
      new Effect.SlideDown(idCapaExpandirContraer, { duration: duracionSlide });
      new Effect.Highlight(idCapaExpandirContraer, 
                      {
                        startcolor: "#feffd0",
                        duration: 2
                      });
    }
    //si tiene alguna funcion la ejecuta    
    if(typeof(funcionExecExpandir)=="string" && funcionExecExpandir !=""){
      sEval = "if(typeof(@FUNCION@)=='function'){@FUNCION@();}";
      eval(sEval.replace(/\@FUNCION@/g,funcionExecExpandir));
    }
  }
  else{
    //string con el html a construir
    html = "<a href=\"javascript:;\" onclick=\"expandirContraerConTexto('"+ idContenedorImagenExpandirContraer +"','"+ idCapaExpandirContraer +"','expandir','"+ textoExpandir +"','"+ textoContraer +"','"+ cssTextoExpandirContraer +"','"+ funcionExecExpandir +"','"+ funcionExecContraer +"',"+ mostrarImagenExpandirContraer +","+ usarEfecto +");\">{$IMAGEN_EXPANDIR_CONTRAER}<span class=\""+ cssTextoExpandirContraer +"\">"+ textoExpandir +"</span></a>";
    imgExpandirContraer = (mostrarImagenExpandirContraer) ? "<img src=\""+ nombreImagenExpandir +"\" alt=\"expandir\" style=\"vertical-align:middle;\" />":"";
    //reemplza marcas especiales
    html = html.replace("{$IMAGEN_EXPANDIR_CONTRAER}", imgExpandirContraer);
    imagen.innerHTML = html;
    //si no usa efecto entonces muestra el contenedor, sino lo anima
    if(!usarEfecto){
      capa.style.display = "none";
    }
    else{
      //metodo de scriptaculos.js
      new Effect.SlideUp(idCapaExpandirContraer, { duration: duracionSlide});
    }
    //si tiene alguna funcion la ejecuta    
    if(typeof(funcionExecContraer)=="string" && funcionExecContraer !=""){
      sEval = "if(typeof(@FUNCION@)=='function'){@FUNCION@();}";
      eval(sEval.replace(/\@FUNCION@/g,funcionExecContraer));
    }
  }
}

//------------------------------------------------------------------
//Metodo      : cerrarBloque()
//Descripcion : permite que a traves de un link se cierre (oculte) un bloque
//Por         : VSR, 08/05/2009
function cerrarBloque(idContenedorImagenCerrar,idCapaCerrar,textoCerrar, cssTextoCerrar, mostrarImagenCerrar, usarEfecto, cerrar){
  var nombreImagenCerrar = "../img/marcoForm/closed_grey.gif";
  var imagen = document.getElementById(idContenedorImagenCerrar);
  var capa   = document.getElementById(idCapaCerrar);
  var html = "";
  var efecto = "";
  var imgCerrar = "";
  var sEval = "";
  var duracionSlide = "1.0";
  var funOnclick = "cerrarBloque('"+ idContenedorImagenCerrar +"','"+ idCapaCerrar +"','"+ textoCerrar +"','"+ cssTextoCerrar +"',"+ mostrarImagenCerrar +","+ usarEfecto +",true);";
  cssTextoCerrar = (cssTextoCerrar=="") ? "cssTextoNormal":cssTextoCerrar;
  var linkCerrarImagen = (mostrarImagenCerrar) ? "<a href=\"javascript:;\" onclick=\""+ funOnclick +"\">{$IMAGEN_CERRAR}</a>":"";
  var linkCerraTexto = (textoCerrar != "") ? "<span class=\""+ cssTextoCerrar +"\"><a class=\""+ cssTextoCerrar +"\" href=\"javascript:;\" onclick=\""+ funOnclick +"\">"+ textoCerrar +"</a></span>":"";

  //string con el html a construir
  html = linkCerraTexto +"&nbsp;"+ linkCerrarImagen;
  imgCerrar = (mostrarImagenCerrar) ? "<img src=\""+ nombreImagenCerrar +"\" alt=\"cerrar\" style=\"vertical-align:middle;\" />":"";
  //reemplza marcas especiales
  html = html.replace("{$IMAGEN_CERRAR}", imgCerrar);
  imagen.innerHTML = html;

  if(cerrar){
    //si no usa efecto entonces muestra el contenedor, sino lo anima
    if(!usarEfecto){
      capa.style.display = "none";
    }
    else{
      //metodo de scriptaculos.js
      new Effect.SlideUp(idCapaCerrar, { duration: duracionSlide });
      new Effect.Highlight(idCapaCerrar, 
                      {
                        startcolor: "#feffd0",
                        duration: 2
                      });
    }
  }
}

//------------------------------------------------------------------
//Metodo      : destacarFilaTabla()
//Descripcion : destaca la fila
//Por         : VSR, 21/04/2008
function destacarFilaTabla(eTabla,objActivaDestacar,backcolorNormal,backcolorDestacado, destacarSiempre){
  var backColorFila;
  var tabla         = document.getElementById(eTabla);
  var rowConsultada = objActivaDestacar.parentNode;
  
  //busca el indice de la fila hasta que lo encuentre. tiene un maximo de 5 niveles
  if(!rowConsultada.rowIndex){
    rowConsultada = objActivaDestacar.parentNode.parentNode;
    if(!rowConsultada.rowIndex){
      rowConsultada = objActivaDestacar.parentNode.parentNode.parentNode;
      if(!rowConsultada.rowIndex){
        rowConsultada = objActivaDestacar.parentNode.parentNode.parentNode.parentNode;
        if(!rowConsultada.rowIndex){
          rowConsultada = objActivaDestacar.parentNode.parentNode.parentNode.parentNode.parentNode;
        }
      }
    }
  }
  //asigna indice de la fila encontrada
  var indexFilaConsultada   = rowConsultada.rowIndex;
  //si el objeto esta marcado entonces destaca la fila, sino lo deja normal
  
  if(!destacarSiempre){
    if(objActivaDestacar){
      destacarSiempre = objActivaDestacar.checked;
    }
  }
  
  if(destacarSiempre){
    backColorFila = backcolorDestacado;
  }
  else{
    backColorFila = backcolorNormal;
  }
  //asigna color de fondo a la fila seleccionada
  tabla.rows[indexFilaConsultada].style.backgroundColor = backColorFila;
}

//------------------------------------------------------------------
//Metodo      : resetForm()
//Descripcion : resetea los valores de un formulario
//Por         : VSR, 01/08/2008
function resetForm(el){
  var form = document.getElementById(el);
  if(form){ form.reset(); }
}

//------------------------------------------------------------------
//Metodo      : seleccionarTodo()
//Descripcion : selecciona todos los locales
//Por         : VSR, 07/05/2008
function seleccionarTodo(listBox, checkBox){
  var list = document.getElementById(listBox);
  if (!list.disabled) {
    selectAll(list,checkBox);
  }
  return false;
}

//------------------------------------------------------------------
//Metodo      : selectAll()
//Descripcion : deja todas las opciones marcadas
//Por         : VSR, 07/05/2008
function selectAll(objTargetElement,checkBox){
  var check = document.getElementById(checkBox);
  for (var i = 0; i < objTargetElement.length; i++) {
    objTargetElement.options[i].selected = check.checked;
  }
  return false;
}

//------------------------------------------------------------------
//Metodo      : contarSeleccionadosMultiSelect()
//Descripcion : cuenta cuantos objetos seleccionados hay
//Por         : VSR, 08/04/2009
function contarSeleccionadosMultiSelect(objTargetElement){
  var contador = 0;
  for (var i = 0; i < objTargetElement.length; i++) {
    if(objTargetElement.options[i].selected) contador++;
  }
  return contador;
}


//------------------------------------------------------------------
//Metodo      : desmarcarTodos()
//Descripcion : desmarca opciones
//Por         : VSR, 07/05/2008
function desmarcarTodos(checkBox){
  var check = document.getElementById(checkBox);
  check.checked = false;
}

//------------------------------------------------------------------
//Metodo      : formatearEstiloConError()
//Descripcion : formatea el control si tiene un error
//Por         : VSR, 26/09/2008
function formatearEstiloConError(obj,el){
  var elemento = (el!="") ? document.getElementById(el): obj;
  if(elemento){
    elemento.className = "cssDestacadoMsgErrorInput cssInput";
  }
}

//------------------------------------------------------------------
//Metodo      : formatearEstiloNormal()
//Descripcion : formatea el control
//Por         : VSR, 26/09/2008
function formatearEstiloNormal(obj,el, inicializarEnBlanco, esReadOnly, valorPorDefecto, classNamePorDefecto){
  var elemento = (el!="") ? document.getElementById(el): obj;
  var className = "cssInput";
  var valor     = "";
  var readOnly  = false;
  
  //setea los parametros del objeto segun su tipo
  if(elemento){
    //setea el valor
    if(inicializarEnBlanco){
      valor = "";
    }
    else{
      valor = (valorPorDefecto!="") ? valorPorDefecto:elemento.value;
    }
    
    //setea el estilo
    if(esReadOnly){
      className = "readOnly cssInput";
    }
    else{
      className = (classNamePorDefecto!="") ? classNamePorDefecto:className;
    }

    //--- formatea un control SELECT ----------
    if(elemento.type == "select-one" || elemento.type == "select-multiple"){
      //setea valor
      if(valor!=""){
        elemento.value = valor;
      }
      else{
        if(inicializarEnBlanco) elemento.selectedIndex = 0;
      }
      //setea className
      elemento.className = className;
      //setea disabled
      elemento.disabled = esReadOnly;
    }

    //--- formatea un RADIOBUTTON o CHECKBOX ----------
    else if(elemento.type == "checkbox" || elemento.type == "radio"){
      //setea valor
      if(valor!=""){
        if(UCase(valor)=="TRUE" || valor=="1"){
          elemento.checked = true;
        }
        else{
          if(UCase(valor)=="FALSE" || valor=="0"){
            elemento.checked = false;
          }
          else{
            elemento.checked = (elemento.checked) ? true:false;
          }
        }
      }
      else{
        elemento.checked = (elemento.checked) ? true:false;
      }
      //setea className
      elemento.className = className;
      //setea disabled
      elemento.disabled = esReadOnly;
    }

    //--- formatea un FILE ----------
    else if(elemento.type == "file"){
      //setea className
      elemento.className = className;
      //setea disabled
      elemento.disabled = esReadOnly;
    }

    //--- formatea un TEXTBOX ----------
    else{
      //setea valor
      elemento.value = valor;
      //setea className
      elemento.className = className;
      //setea disabled
      elemento.readOnly = esReadOnly;
    }
  }
}

//------------------------------------------------------------------------------------
//Metodo      : mostrarTipsPersonalizado()
//Descripcion : muestra un div con un texto de ayuda posicionado con respecto al control que lo invoca
//Por         : VSR, 20/06/2008
function mostrarTipsPersonalizado(elementoQueInvoca, elementoContenedorTips, posicionElementoContenedor){
  var elementoInvocador = document.getElementById(elementoQueInvoca);
  var elementoContenedor = document.getElementById(elementoContenedorTips);
  if(posicionElementoContenedor=="") posicionElementoContenedor = "right top";

  if(elementoInvocador && elementoContenedor){
    //leftElementoContenedor = calcularPosicionElemento(elementoInvocador,elementoContenedor,posicionElementoContenedor,"EjeX");
    //topElementoContenedor = calcularPosicionElemento(elementoInvocador,elementoContenedor,posicionElementoContenedor,"EjeY");
    leftElementoContenedor = elementoInvocador.offsetLeft + (elementoInvocador.offsetWidth+5);
    topElementoContenedor = elementoInvocador.offsetTop;

    elementoContenedor.style.display = "block";
    elementoContenedor.style.position = "absolute";
    elementoContenedor.style.zIndex   = 100;
    elementoContenedor.style.top      = topElementoContenedor +'px';
    elementoContenedor.style.left     = leftElementoContenedor +'px';
  }
}

//------------------------------------------------------------------------------------
//*** EN DESARROLLO *****
//Metodo      : calcularPosicionElemento()
//Descripcion : calcula la coordenada del elemento a posicion segun el eje seleccionado
//Por         : VSR, 13/10/2008
function calcularPosicionElemento(elementoInvocador,elementoContenedor,posicionElementoContenedor,tipoEje){
  var posicion;
  var padding = 3;

  var topElementoInvocador   = elementoInvocador.offsetTop;
  var leftElementoInvocador  = elementoInvocador.offsetLeft;
  var widthElementoInvocador = elementoInvocador.offsetWidth;
  var heightElementoInvocador = elementoInvocador.offsetWidth;

  var topElementoContenedor   = elementoContenedor.offsetTop;
  var leftElementoContenedor  = elementoContenedor.offsetLeft;
  var widthElementoContenedor = elementoContenedor.offsetWidth;
  var heightElementoContenedor = elementoContenedor.offsetHeight;

  //calcular posiciones (x,y) para cada uno de los vertices del elemento para asi saber si sobrepaso el ancho y largo
  //de la pantalla en algun momento

  if(tipoEje == "EjeX"){
    if(InStr(posicionElementoContenedor,"left")>0){
      posicion = leftElementoInvocador - widthElementoContenedor - padding;
      if (posicion<0){
        posicionElementoContenedor = posicionElementoContenedor.replace("left","right");
        posicion = calcularPosicionElemento(elementoInvocador,elementoContenedor,posicionElementoContenedor,tipoEje);
      }
    }
    else if(InStr(posicionElementoContenedor,"center")>0){
      posicion = (leftElementoInvocador - (widthElementoContenedor/2)) + (widthElementoInvocador/2);
      //calcular posicion si sobrepasa la pantalla a la izquierda o derecha (desarrollarlo)
    }
    else if(InStr(posicionElementoContenedor,"right")>0){
      posicion = (leftElementoInvocador + widthElementoInvocador) + padding;
      //calcular posicion si sobrepasa la pantalla al lado derecho (desarrollarlo)
    }
    else{
      //posiciona por defecto a la derecha
      posicion = (leftElementoInvocador + widthElementoInvocador) + padding;
      //calcular posicion si sobrepasa la pantalla al lado derecho (desarrollarlo)
    }
  }
  //EjeY
  else{
    if(InStr(posicionElementoContenedor,"top")>0){
      posicion = topElementoInvocador - heightElementoContenedor - padding;
      if (posicion<0){
        posicionElementoContenedor = posicionElementoContenedor.replace("top","bottom");
        posicion = calcularPosicionElemento(elementoInvocador,elementoContenedor,posicionElementoContenedor,tipoEje);
      }
    }
    else if(InStr(posicionElementoContenedor,"middle")>0){
      posicion = (topElementoInvocador - (heightElementoContenedor/2)) + (heightElementoInvocador/2);
      //calcular posicion si sobrepasa la pantalla a arriba o abajo (desarrollarlo)
    }
    else if(InStr(posicionElementoContenedor,"bottom")>0){
      posicion = (topElementoInvocador + heightElementoInvocador) + padding;
      //calcular posicion si sobrepasa la pantalla hacia abajo (desarrollarlo)
    }
    else{
      //posiciona por defecto arriba
      posicion = topElementoInvocador - heightElementoContenedor - padding;
      if (posicion<0){
        posicionElementoContenedor = posicionElementoContenedor.replace("top","bottom");
        posicion = calcularPosicionElemento(elementoInvocador,elementoContenedor,posicionElementoContenedor,tipoEje);
      }
    }
  }
  //retorna posicion
  return posicion;
}


//------------------------------------------------------------------------------------
//Metodo      : findPosX()
//Descripcion : obtiene la posicion del eje x de un elemento
//Por         : VSR, 13/10/2008
function findPosX(obj){
  var curleft = 0;
  if(obj.offsetParent)
    while(1){
      curleft += obj.offsetLeft;
      if(!obj.offsetParent)
        break;
      obj = obj.offsetParent;
    }
  else if(obj.x)
    curleft += obj.x;

  return curleft;
}

//------------------------------------------------------------------------------------
//Metodo      : findPosY()
//Descripcion : obtiene la posicion del eje y de un elemento
//Por         : VSR, 13/10/2008
function findPosY(obj){
  var curtop = 0;
  if(obj.offsetParent)
    while(1)
    {
      curtop += obj.offsetTop;
      if(!obj.offsetParent)
        break;
      obj = obj.offsetParent;
    }
  else if(obj.y)
    curtop += obj.y;

  return curtop;
}

//--------------------------------------------------------------------------------------------
//Metodo      : obtenerValorSelect()
//Descripcion : obtiene el valor de un select a partir de un texto a buscar
//Por         : VSR, 21/10/2008
function obtenerValorSelect(nombreSelect,valorABuscar){
  var objSelect = document.getElementById(nombreSelect);
  var valorSelect = "";
  var valorOption = "";

  if(objSelect){
    var totalOpciones = objSelect.options.length - 1;
    //formate el valor para buscarlo correctamente
    valorABuscar = "," + valorABuscar + ",";
    for(var i=0; i<=totalOpciones; i++){
      valorOption = "," + objSelect.options[i].value + ",";
      if(InStr(0,valorOption,valorABuscar)>0){
        valorSelect = objSelect.options[i].value;
        break;
      }
    }
  }
  return valorSelect;
}

//-------------------------------------------------------------------------------------
//Metodo      : replaceValorVacio()
//Descripcion : reemplaza valor vacio por una imagen en blanco
//Por         : VSR, 07/05/2008
function replaceValorVacio(valor){
  var valorReemplazo  = "<img src=\"../img/_blank.gif\" align=\"absmiddle\" style=\"width:1px;height:1px;\" alt=\"\" />";
  var newValor        = "";

  if(RTrim(LTrim(valor))==""){
    newValor = valorReemplazo;
  }
  else{
    newValor = valor;
  }
  return newValor;
}

//-------------------------------------------------------------------------------------
//Metodo      : obtenerHTMLError()
//Descripcion : construye el html para mostrar el error
//Por         : VSR, 08/08/2008
function obtenerHTMLError(msgError){
  var html = "";
  html += "<table border=\"0\" cellpadding=\"0\" border=\"0\">";
  html += " <tr style=\"vertical-align:top;\">";
  html += "   <td><img src=\"../img/ico_error.gif\" alt=\"error\"/></td>";
  html += "   <td style=\"padding-left:5px;\"><div><b>Se encontraron los siguientes errores en este bloque:</b></div><div>"+ msgError +"</div></td>";
  html += " </tr>";
  html += "</table>";
  //retorna valor
  return html;
}

//-------------------------------------------------------------------------------------
//Metodo      : ejecutarEventoClickConEnter()
//Descripcion : ejecuta el metodo click del elemento(si lo permite)
//Por         : VSR, 24/12/2008
function ejecutarEventoClickConEnter(el){
  var elemento = document.getElementById(el);

  if(elemento){
    //recupera el evento del teclado. Usa prototype
    Event.observe(document, 'keypress', function(event){
      if(event.keyCode == Event.KEY_RETURN)
        try{
          elemento.click();
        }
        catch(e){
          //alert("El evento ENTER para realizar la búsqueda no está disponible para este navegador.\nPresione sobre el botón \"Buscar\" para ejecutarla.");
        }
      }
    );
  }
}

//-------------------------------------------------------------------------------------
//Metodo      : mostrarHints()
//Descripcion : muestar un tooltips con una ayuda
function mostrarHints(control, mostrar){
  var c=document.getElementById(control);
  if (c != null){
    c.style.display = (mostrar)?'block':'none';
  }
}

//--------------------------------------------------------------
//Metodo      : obtenerValoresMultiSelect
//Descripcion : obtiene los valores de un multiselect separados por coma
//Por         : VSR, 21/08/2008
function obtenerValoresMultiSelect(obj){
  var lista = "";
  var valor = "";
  //construye la lista separados por coma
  for(var i=0; i<obj.length; i++){
    if (obj.options[i].selected){
      valor = obj.options[i].value;
      lista += (lista=="") ? valor : ","+ valor;
    }
  }
  //asigna valor
  return lista;
}

//-------------------------------------------------------------------------------------
//Metodo      : esValidoValoresDuplicados()
//Descripcion : valida si hay valores duplicados
//Por         : VSR, 30/04/2008
function esValidoValoresDuplicados(nameListadoBusqueda, idABuscar){
  var objListadoBusqueda  = document.getElementsByName(nameListadoBusqueda);
  var objABuscar          = document.getElementById(idABuscar);
  var esValido            = false;

  //si el objeto existe entonces lo revisar
  if(objListadoBusqueda){
    var totalRegistros    = objListadoBusqueda.length;
    var valorSeleccionado = objABuscar.value;
    for(var i=0; i < totalRegistros; i++){
      //si el registro ya existe entonces retorna verdadero
      if(objListadoBusqueda[i].value == valorSeleccionado ){
        esValido = true;
        break;
      }	
    }
  }

  //retorna valor
  return esValido;
}

//--------------------------------------------------------------------------------------------
//Descripcion : comprueba si el valor ya existe en base de datos
//Por         : VSR, 15/01/2008
function comprobarDuplicidadDato(id, elContenedorAComparar, elContenedorRespuestaTxt, elContenedorRespuestaDiv, opcion) {
  var txtContenedorComparar = document.getElementById(elContenedorAComparar);
  var txtContenedor = document.getElementById(elContenedorRespuestaTxt);
  var divContenedor = document.getElementById(elContenedorRespuestaDiv);
  var queryString = "";
  var queryStringUpdate = "";

  //construye queryString
  queryString += "id=$id";
  queryString += "&valor=$valor";
  queryString += "&op=$op";

  //formate la URL con los parametros verdaderos
  queryStringUpdate = queryString.replace("$id", Url.encode(id));
  queryStringUpdate = queryStringUpdate.replace("$valor", Url.encode(txtContenedorComparar.value));
  queryStringUpdate = queryStringUpdate.replace("$op", Url.encode(opcion));

  //invoca al metodo de Ajax de la libreria prototype.js
  var okFunc = function(t) {
      var respuesta = t;
      if (respuesta == CONST_CODIGO_SQL_ERROR) {
          divContenedor.innerHTML = "&nbsp;<span class='ico16-error'><img src='../img/_blank.gif' class='ico16' alt='' /></span>&nbsp;<span class='cssMensajeError'>Ha ocurrido un error interno y no se pudo obtener el valor.</span>";
          txtContenedor.value = "0";
      }
      else {
          //si el valor esta duplicado entonces muestra mensaje de Ocupado
          if (respuesta == "1") {
            divContenedor.innerHTML = "&nbsp;<span class='ico16-error'><img src='../img/_blank.gif' class='ico16' alt='' /></span>&nbsp;<span class='cssMensajeError'>No disponible, ingrese otro.</span>";
          }
          else {
              divContenedor.innerHTML = "&nbsp;<span class='ico16-ticket'><img src='../img/_blank.gif' class='ico16' alt='' /></span>&nbsp;<span class='cssMensajeExito'>Disponible</span>";
          }
          txtContenedor.value = respuesta;
      }
  }
  var errFunc = function(t) {
    divContenedor.innerHTML = "&nbsp;<span class='ico16-error'><img src='../img/_blank.gif' class='ico16' alt='' /></span>&nbsp;<span class='cssMensajeError'>Ha ocurrido un error interno y no se pudo obtener el valor.</span>";
  }
  $.ajax({
      url: "../webAjax/waComprobarDatoDuplicado.aspx",
      type: "post",
      async: false,
      data: queryStringUpdate,
      success: okFunc,
      error: errFunc
  });   
}

//-------------------------------------------------------------------------------------
//Descripcion : obtiene la llave del perfil seleccionado
//Por         : VSR, 19/03/2009
function obtenerLlavePerfil(elemOrigen, elemDestino) {
  var oOrigen = document.getElementById(elemOrigen);
  var oDestino = document.getElementById(elemDestino);
  var queryString = "";

  if (oOrigen && oDestino) {
    if (IsValid_Empty(oOrigen)) {
      oDestino.value = "";
    }
    else {
      queryString += "op=ObtenerLlavePerfil";
      queryString += "&idp=" + oOrigen.value;

      //invoca al metodo de Ajax de la libreria prototype.js
      var okFunc = function(t) {
        var respuesta = t;
        if (contieneTextoTerminoSesion(respuesta)) {
          redireccionarLogin();
        }
        else if (respuesta == CONST_CODIGO_SQL_ERROR) {
          alert("Ha ocurrido un error interno y no se pudo obtener el valor.");
          oDestino.value = "";
        }
        else {
          oDestino.value = respuesta;
        }
      }
      var errFunc = function(t) {
        alert("Ha ocurrido un error interno y no se pudo obtener el valor.");
        oDestino.value = "";
      }
      $.ajax({
        url: "../webAjax/waPerfil.aspx",
        type: "post",
        async: false,
        data: queryString,
        success: okFunc,
        error: errFunc
      });   
    }
  }
}

//-------------------------------------------------------------------------------------
//Descripcion : muestra mensaje con un boton cerrar
//Por         : VSR, 19/08/2009
function mostrarMensajeConBotonCerrar(hContenedor, mensaje, width, height, tipo, cerrarAutomatico) {
  var html = "";
  var oContenedor = document.getElementById(hContenedor);

  try {
    if (tipo == "Error") {
      styleMarco = "cssDestacadoMsgError";
      color = "rojo";
      mensaje = "<span class='cssMensajeError'><span class=\"ico16-error\"><img src=\"../img/_blank.gif\" class=\"ico16\" alt=\"\" /></span>&nbsp;" + mensaje + "</span>";
    }
    else if (tipo == "Advertencia") {
      styleMarco = "cssDestacadoMsgAdvertencia";
      color = "amarillo";
      mensaje = "<span class='cssMensajeAdvertenciaBloque'><span class=\"ico16-warning\"><img src=\"../img/_blank.gif\" class=\"ico16\" alt=\"\" /></span>&nbsp;" + mensaje + "</span>";
    }
    else if (tipo == "Ayuda") {
      styleMarco = "cssDestacadoMsgAdvertencia";
      color = "amarillo";
      mensaje = "<span class='cssMensajeAdvertenciaBloque'><span class=\"ico16-ayuda\"><img src=\"../img/_blank.gif\" class=\"ico16\" alt=\"\" /></span>&nbsp;" + mensaje + "</span>";
    }
    else {
      styleMarco = "cssDestacadoMsgExito";
      color = "verde";
      mensaje = "<span class='cssMensajeExito'><span class=\"ico16-ticket\"><img src=\"../img/_blank.gif\" class=\"ico16\" alt=\"\" /></span>&nbsp;" + mensaje + "</span>";
    }

    html += "<div style=\"padding-bottom:7px;\">";
    html += " <div class=\"" + styleMarco + "\">";
    html += "   <div class=\"clearBoth\">";
    html += "     <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" style=\"width:" + width + "; height:" + height + ";\">";
    html += "       <tr valign=\"top\">";
    html += "         <td style=\"padding-right:10px;\">" + mensaje + "</td>";
    html += "         <td style=\"width:13px\"><a href=\"javascript:;\" onclick=\"ocultarElemento('" + hContenedor + "')\"><span class=\"ico16-cerrar-"+ color +"\"><img src=\"../img/_blank.gif\" class=\"ico16Cerrar\" alt=\"\" /></span></a></td>";
    html += "       </tr>";
    html += "     </table>";
    html += "   </div>";
    html += " </div>";
    html += "</div>";

    oContenedor.style.display = "block";
    oContenedor.innerHTML = html;
    //limpia el mensaje
    if (cerrarAutomatico) { setTimeout("ocultarElemento('" + hContenedor + "')", 5000); }
  }
  catch (e) {
    if (e.description) { //para IE
      alert("Exception:\n" + e.description)
    }
    else { // otro navegador
      alert("Exception:\n" + e)
    }
    return false;
  }
}


//-------------------------------------------------------------------------------------
//Metodo      : cargarComboRelacionado()
//Descripcion : carga un combo en relacion al valor de otro control
//Por         : VSR, 19/03/2009
function cargarComboRelacionado(elemOrigenDato, contenedorCombo, nombreCombo, valorSeleccionado, estadoCombo, tipoSeleccion, tipoRelacion) {
  var objOrigenDato = document.getElementById(elemOrigenDato);
  var objContenedorCombo = document.getElementById(contenedorCombo);
  var queryStringUpdate = "";

  var queryString = "v=$v";
  queryString += "&vs=$vs";
  queryString += "&ec=$ec";
  queryString += "&nc=$nc";
  queryString += "&ts=$ts";
  queryString += "&tr=$tr";

  //formate la URL con los parametros verdaderos
  valorSeleccionado = (valorSeleccionado == "") ? "-1" : valorSeleccionado;
  queryStringUpdate = queryString.replace("$v", Url.encode(objOrigenDato.value));
  queryStringUpdate = queryStringUpdate.replace("$vs", Url.encode(valorSeleccionado));
  queryStringUpdate = queryStringUpdate.replace("$ec", estadoCombo);
  queryStringUpdate = queryStringUpdate.replace("$nc", nombreCombo);
  queryStringUpdate = queryStringUpdate.replace("$ts", tipoSeleccion);
  queryStringUpdate = queryStringUpdate.replace("$tr", tipoRelacion);

  if (objOrigenDato && objContenedorCombo) {
    objContenedorCombo.innerHTML = objContenedorCombo.innerHTML = "<img src='../img/autocomplete_spinner.gif' border='0' align='absmiddle' alt='' />";
    //invoca al metodo de Ajax de la libreria prototype.js
    var okFunc = function (t) {
      var respuesta = t.responseText;
      if (respuesta == CONST_CODIGO_SQL_ERROR) {
        objContenedorCombo.innerHTML = "<img src='../img/remove.png' border='0' align='absmiddle'>&nbsp;<span class='cssMensajeError'>Ha ocurrido un error interno y no se pudo obtener el valor.</span>";
      }
      else {
        objContenedorCombo.innerHTML = respuesta;
      }
    }
    var errFunc = function (t) {
      objContenedorCombo.innerHTML = "<img src='../img/remove.png' border='0' align='absmiddle'>&nbsp;<span class='cssMensajeError'>Ha ocurrido un error interno y no se pudo obtener el valor.</span>";
    }
    new Ajax.Request('../webAjax/getComboRelacionado.aspx', {
      method: 'post',
      parameters: queryStringUpdate,
      asynchronous: true,
      onSuccess: okFunc,
      onFailure: errFunc
    });
  }
  else {
    var msgError = "";
    msgError += "Se produjo un error!!\n";
    msgError += "Alguno de los siguientes elementos no existe:\n";
    msgError += " - " + elemOrigenDato + "\n";
    msgError += " - " + contenedorCombo + "\n";
    alert(msgError);
  }
}

//-------------------------------------------------------------------------------------
//Metodo      : cargarComboRelacionado()
//Descripcion : carga un combo en relacion al valor de otro control
//Por         : VSR, 19/03/2009
//function cargarComboRelacionado(elemOrigenDato, contenedorCombo, nombreCombo, valorSeleccionado, estadoCombo, tipoSeleccion, tipoRelacion, propiedades, limpiarCombo, anchoCombo, obtenerTodo) {
//  var objOrigenDato = document.getElementById(elemOrigenDato);
//  var objContenedorCombo = document.getElementById(contenedorCombo);
//  var queryString = "";
//  var queryStringUpdate = "";
//  var valor = "";

//  queryString = "op=ObtenerComboRelacionado";
//  queryString += "&v=$v";
//  queryString += "&vs=$vs";
//  queryString += "&ec=$ec";
//  queryString += "&nc=$nc";
//  queryString += "&ts=$ts";
//  queryString += "&tr=$tr";
//  queryString += "&pr=$pr";
//  queryString += "&w=$w";

//  //formate la URL con los parametros verdaderos
//  valorSeleccionado = (valorSeleccionado == "") ? "-1" : valorSeleccionado;
//  propiedades = (propiedades == "") ? "-1" : propiedades;
//  valor = (limpiarCombo) ? "-200" : objOrigenDato.value;
//  valor = (obtenerTodo) ? "-1" : valor;

//  queryStringUpdate = queryString.replace("$v", Url.encode(valor));
//  queryStringUpdate = queryStringUpdate.replace("$vs", Url.encode(valorSeleccionado));
//  queryStringUpdate = queryStringUpdate.replace("$ec", estadoCombo);
//  queryStringUpdate = queryStringUpdate.replace("$nc", nombreCombo);
//  queryStringUpdate = queryStringUpdate.replace("$ts", tipoSeleccion);
//  queryStringUpdate = queryStringUpdate.replace("$tr", tipoRelacion);
//  queryStringUpdate = queryStringUpdate.replace("$pr", Url.encode(propiedades));
//  queryStringUpdate = queryStringUpdate.replace("$w", Url.encode(anchoCombo));

//  if (objOrigenDato && objContenedorCombo) {
//    objContenedorCombo.innerHTML = "<img src='../img/autocomplete_spinner.gif' border='0' align='absmiddle' alt='' />";
//    //invoca al metodo de Ajax de la libreria prototype.js
//    var okFunc = function(t) {
//      var respuesta = t;
//      if (contieneTextoTerminoSesion(respuesta)) {
//        redireccionarLogin();
//      }
//      else if (respuesta == CONST_CODIGO_SQL_ERROR) {
//        alert("Ha ocurrido un error interno y no se pudo obtener el valor");
//        objContenedorCombo.innerHTML = "";
//      }
//      else {
//        objContenedorCombo.innerHTML = respuesta;
//      }
//    }
//    var errFunc = function(t) {
//      alert("Ha ocurrido un error interno y no se pudo obtener el valor");
//      objContenedorCombo.innerHTML = "";
//    }
//    $.ajax({
//      url: "../webAjax/waSistema.aspx",
//      type: "post",
//      async: false,
//      data: queryStringUpdate,
//      success: okFunc,
//      error: errFunc
//    });   
//  }
//  else {
//    var msgError = "";
//    msgError += "Se produjo un error!!\n";
//    msgError += "Alguno de los siguientes elementos no existe:\n";
//    msgError += " - " + elemOrigenDato + "\n";
//    msgError += " - " + contenedorCombo + "\n";
//    alert(msgError);
//  }
//}

//-------------------------------------------------------------------------------------
//Descripcion : muestra los mensajes de error en los controles respectivos
//Por         : VSR, 06/12/2010
function GEN_MostrarMensajesError(arrayErrores) {
  var totalErrores = arrayErrores.length;
  for (var i = 0; i <= totalErrores - 1; i++) {
    control = arrayErrores[i].control;
    mensaje = arrayErrores[i].mensaje;
    if (mensaje != "") {
      $.validationEngine.addPromptError(control, mensaje);
    } else {
      $.validationEngine.removePrompt(control);
    }
  }
}

//------------------------------------------------------------------------------------
//Metodo      : ocultarCargandoPagina()
//Descripcion : oculta div de cargando pagina
//Por         : VSR, 20/06/2008
function ocultarCargandoPagina(){
  setTimeout("ocultarElemento('divLoadMasterPage')", 1000);
}

//*********************************************************************
//******** Elimina un archivo adjunto desde la base de datos y  *******
//******** desde el sistema de archivos *******************************
function eliminarArchivo(idArchivo, nombreLabel, nombreFileUpload, nombreImagenEliminar, entidad) {
  var queryString = "";
  queryString += "accion=$e";
  queryString += "&idArchivo=$idArchivo";
  queryString += "&entidad=$entidad";

  queryStringUpdate = queryString.replace("$idArchivo", Url.encode(idArchivo));
  queryStringUpdate = queryStringUpdate.replace("$e", 'e');
  queryStringUpdate = queryStringUpdate.replace("$entidad", Url.encode(entidad));


  var label = document.getElementById(nombreLabel);
  var imagen = document.getElementById(nombreImagenEliminar);
  var fileUpload = document.getElementById(nombreFileUpload);


  if (confirm("¿Está seguro que quiere eliminar el Documento?")) {

    label.style.display = "none";
    imagen.style.display = "none";
    fileUpload.style.display = "block";

    //invoca al metodo de Ajax de la libreria prototype.js
    var okFunc = function (t) {
      var respuesta = t.responseText;
      if (respuesta == CONST_CODIGO_SQL_ERROR) {
        alert('Error SQL');
      }
      else {
        eval(respuesta);

      }
    }
    var errFunc = function (t) {
      alert('Error Interno!!');
    }
    new Ajax.Request('../webAjax/delEliminarArchivoDocumento.aspx', {
      method: 'post',
      parameters: queryStringUpdate,
      asynchronous: true,
      onSuccess: okFunc,
      onFailure: errFunc
    });

  }
  return false;
}

//------------------------------------------------------------------------------------
//Funcion    : fechaDatetoIso()
//Descripcion: convierte una fecha en formato Date a ISO
//Por        : JLA, 19/08/2009
function fechaDatetoIso(da) {

  dy = da.getFullYear(); // Get full year (as opposed to last two digits only) 
  dm = da.getMonth() + 1; // Get month and correct it (getMonth() returns 0 to 11) 
  dd = da.getDate(); // Get date within month 
  if (dy < 1970) dy = dy + 100; // We still have to fix the millennium bug 
  ys = new String(dy); // Convert year, month and date to strings 
  ms = new String(dm);
  ds = new String(dd);
  if (ms.length == 1) ms = "0" + ms; // Add leading zeros to month and date if required 
  if (ds.length == 1) ds = "0" + ds;
  ys = ys + ms + ds; // Combine year, month and date in ISO format 
  return ys;

}


//------------------------------------------------------------------------------------
//Funcion    : proximaFechaHabil()
//Descripcion: retorna verdadero o falso segun la fecha entregada corresponde a un dia habil
//Por        : JLA, 19/08/2009
function proximaFechaHabil(fecha) {

  var arrDias = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"];
  var dia = fecha.getDay();
  dia = arrDias[dia];

  var milisegundos = parseInt(24 * 60 * 60 * 1000);

  switch (dia) {

    case "Friday":
      fecha = addDay(fecha, 3);
      break;

    case "Saturday":
      fecha = addDay(fecha, 2);
      break;

    default:
      fecha = addDay(fecha, 1);

  }
  return fecha;

}


//------------------------------------------------------------------------------------
//Funcion    : addDay()
//Descripcion: agrega un "num" dias a la fecha entregada en formato Date retornando Date+1
//Por        : JLA, 19/08/2009

function addDay(fecha, num) {

  fecha.setTime(fecha.getTime() + num * 24 * 60 * 60 * 1000);

  return fecha;

}

//------------------------------------------------------------------------------------
//Funcion    : addDay2()
//Descripcion: agrega un "num" dias a la fecha entregada en formato Date retornando fecha
//						 en formato dd/mm/yyyy + 1 dia
//Por        : JLA, 19/08/2009
function addDay2(fecha, num) {

  var fechaResult = "";
  fecha.setTime(fecha.getTime() + num * 24 * 60 * 60 * 1000);
  var mes = fecha.getMonth() + 1;
  if (mes < 9) mes = '0' + mes;
  fechaResult = fecha.getDate() + '/' + mes + '/' + fecha.getFullYear();

  return fechaResult;

}
//------------------------------------------------------------------------------------
//Funcion    : EsdiaHabil()
//Descripcion: retorna verdadero o falso segun la fecha entregada corresponde a un dia habil
//Por        : JLA, 19/08/2009
function esDiaHabil(fecha) {
  var retorna = true;
  var arrDias = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"];
  var dia = fecha.getDay();
  dia = arrDias[dia];

  switch (dia) {
    case "Saturday":
      retorna = false;
      break;

    case "Sunday":
      retorna = false;
      break;

    default:
      retorna = true;
  }

  return retorna;

}